3. QR Code Payload Data Object
The content of the NEPALPAY QR Code includes the following 5 groups of data objects and as per EMV QRCPS.
QR Code Conventions
Merchant Account Information
Additional Merchant Information
Transaction Value
Additional Data Template
3.1. QR Code Convention
The QR Code Conventions (Table 4.1) specify conventions used for the QR Code content, such as Payload Format indicator, which defines the version of the QR Code template and hence the conventions on the identifiers, lengths and values.
Table 4.1: QR Code Conventions
ID | Name | Length | Presence | Remarks |
---|---|---|---|---|
"00" | Payload Format Indicator | "02" | M | A fixed value of “01” |
"01" | Point of Initiation Method | "02" | O | “11” for static QR Codes; “12” for dynamic QR Codes |
"63" | Cyclic Redundancy Check (CRC) | "04" | M | Checksum calculated over all the data objects included in the QR code |
The Payload Format Indicator (ID “00”) shall contain a value of "01". All other values are RFU.
NEPALPAY QR Techncial & API Specification Public 9/47 The Point of Initiation Method (ID “01”) shall contain a value of "11" or "12". All other values are RFU. The value of "11" should be used when the same QR Code [static] is shown for more than one transaction and the value of “12” should be used when a new QR Code [dynamic] is shown for each transaction.
The CRC (ID “63”) shall be calculated according to [ISO/IEC 13239] using the polynomial '1021' (hex) and initial value 'FFFF' (hex). The data over which the checksum is calculated shall cover all the data objects, including their ID, Length and Value, to be included in the QR Code, in their respective order, as well as the ID and Length of the CRC itself (but excluding its Value). Following the calculation of the checksum, the resulting 2-byte hexadecimal value shall be encoded as a 4-character Alphanumeric Special value by converting each nibble to an Alphanumeric Special character. For example, a CRC with a two-byte hexadecimal value of '007B' is included in the QR Code as "6304007B".
3.2. Merchant Account Information
The Merchant Account Information specifies the identity of a merchant. Each payment operator may define its own format of the Merchant Account Information IDs. Table 3.2A shows the allocation of Merchant Account Information IDs among various payment operators.
Table 3.2A: Merchant Account Information
ID | Name | Length | Presence | Remarks |
---|---|---|---|---|
“02” - “03” | Reserved for Visa | Var up to “99” |
| |
“04” - “05” | Reserved for Mastercard | |||
“06” - “08” | Reserved by EMVCo | |||
“09” - “10” | Reserved for Discover | |||
“11” - “12” | Reserved for Amex | |||
“13” - “14” | Reserved for JCB | |||
“15” - “16” | Reserved for UnionPay | |||
“17” - “25” | Reserved by EMVCo | |||
“26” - “28” | Used by PSOs in Nepal | |||
“29” | Used for NEPALPAY QR of NCHL in Nepal | |||
“30” - “51” | NOT USED Reserved for the future Dynamically used by payment operators for use in Nepal | Dynamically used by payment operators for use in Nepal |
The IDs ”26” to “51” are Merchant Account Information templates, which may include primitive data objects and other templates that can be defined by individual payment operators. The ID “29” is to be used by the entities associated with NEPALPAY QR.
The Merchant Account Information template shall contain a primitive Globally Unique Identifier data object with a data object ID "00" to identify the payment operator and the corresponding merchant account information specific to that payment operator as shown in below table.
Table 3.2B: Data Object ID Allocation in Merchant Account Information Template for NEPALPAY QR (ID 29)
ID | Name | Format | Length | Presence | Remarks |
---|---|---|---|---|---|
"00" | Globally Unique Identifier | ans | Var. up to "32" | M | An identifier to identify the payment operator which uses this template to define the Merchant Account Information. The specification for this field is provided below. |
"01"-"99" | Payment network specific | S | O | Additional data objects to define the Merchant Account Information specific to the payment operator |
The value of the Globally Unique Identifier (GUID) field shall be in the following format:GUID
- “NCHL” + 8 CHARACTER ACQUIRER_CODE + MERCHANT_CODE
- “NCHL” will be a constant to be appended as a prefix while creating the GUID
- 8 Character Acquirer Code will be provided by NCHL after enrollment in the NPI system
- MERCHANT_CODE will be a variable length representation as made by the acquirer.
- This code is supposed to be unique for a particular acquirer.
- The maximum length of this code is 20 characters.
Payment Network Specific
Any other specific information to further define merchant account can be further accommodated under payment network specific data. These data will be context specific and outside of the scope of specification.
3.3. Additional Merchant Information
The Additional Merchant Information (Table 3.3A) specifies the information about a merchant such as merchant name and business location.
Table 3.3A: Additional Merchant Information
ID | Name | Format | Length | Presence | Remarks |
---|---|---|---|---|---|
"52" | Merchant Category Code | N | "04" | M | Four-digit number listed in ISO 18245 |
"58" | Country Code | ans | "02" | M | |
"59" | Merchant Name | ans | var upto "25" | M | |
"60" | Merchant City | ans | var upto "15" | M | |
"61" | Postal Code | ans | var upto "10" | O | |
"64" | Merchant Information - Language Template | S | var upto "99" | O | A template with other primitive data objects (See EMV QRCPS for details) |
The Merchant Category Code (MCC) (ID “52”) shall contain an MCC as defined by [ISO 18245]. The MCC should indicate the Merchant Category Code of the merchant. Put a dummy code of “0000” in the MCC field if the payment operator does not use this information.
The Country Code (ID “58”) shall contain a value as defined by [ISO 3166-1 alpha 2]. The Country Code should indicate the country in which the merchant transacts. Put “NP” in the Country Code field if the merchant transacts in Nepal.
The Merchant Name (ID “59”) shall be present. The Merchant Name should indicate the “doing business as” name for the merchant. If the QR code information supports only payment operators who supply merchant information via the payment operator’s centralized database, this field may be populated with a dummy code of “NA” in the Merchant Name field. In all other instances, the Merchant Name field must indicate the “doing business as” name for the merchant.
The Merchant City shall be present (ID “60”). The Merchant City should indicate the city of the merchant's physical location. Mention “KATHMANDU” in the Merchant City Code field if the merchant is located in Kathmandu.
The Merchant Information – Language Template (ID “64”) is a template, which contains other data fields, which may be used by a mobile application to present the merchant information in an alternate language.
Table 3.3B: Data Fields for Merchant Information – Language Template (ID “64”)
ID | Name | Format | Length | Presence | Remarks |
---|---|---|---|---|---|
"00" | Language Preference | ans | "02" | M | |
"01" | Merchant Name - Alternate Language | S | Var upto "25" | M | |
"02" | Merchant City - Alternate Language | S | Var upto "15" | O | |
"03" - "99" | RFU for EMVCo | S | Var upto "99" | Data objects reserved for EMVCo |
If the Merchant Information – Language Template (ID “64”) is present, the template shall contain the Language Preference field (ID "00") and Merchant Name — Alternate Language field (ID "01"). It may contain the Merchant City — Alternate Language field (ID "02"). All other IDs within the Merchant Information—Language Template are RFU for EMVCo.
The data fields with IDs "01" and "02" are used as an addition to the merchant information under the root. While the equivalent data objects under the root are defined with a format of Alphanumeric Special, and as such can only contain the Common Character Set, the data fields with IDs “01” and “02”, if present, are defined with a format of String, so therefore may contain a different character set.
The Language Preference field (ID “00”) shall contain 2 alphabetical characters coded to a value defined by [ISO 639]. The value should represent the single language used to encode the Merchant Name— Alternate Language field (ID “01”) and the optional Merchant City—Alternate Language field (ID “02”).
3.4. Transaction Value
The Transaction Value data objects (listed in Table 3.4) specify the currency and amount of transaction. They also include tip or convenience indicators, which allow merchants or customers to specify the convenience fee in fixed value or percentage.
Table 3.4: Transaction Value
ID | Name | Format | Length | Presence | Remarks |
---|---|---|---|---|---|
“53” | Transaction Currency | N | “03” | M | A numeric code based on ISO 4217, e.g., put “524” for NPR. |
“54” | Transaction Amount | ans | Var. up to “13” | C | |
“55” | Tip or Convenience Indicator | N | “02” | O | |
“56” | Value of Convenience Fee Fixed | ans | Var. up to “13” | C | |
“57” | Value of Convenience Fee Percentage | ans | Var. up to “05” | C |
The Transaction Currency (ID “53”) shall conform to [ISO 4217] and shall contain the 3-digit numeric representation of the currency. For example, NPR is represented by the value "524". The value should indicate the transaction currency in which the merchant transacts.
The Transaction Amount (ID “54”), if present, shall be different from zero, shall only include (numeric) digits "0" to "9" and may contain a single "." character as the decimal mark. When the amount includes decimals, the "." character shall be used to separate the decimals from the integer value and the "." character may be present even if there are no decimals. The Transaction Amount shall not be included if the mobile application should prompt the consumer to enter the amount to be paid to the Merchant.
The payment system operators should follow the rules and format in accordance with the EMV QRCPS to process the Transaction Value IDs of the QR Code.
3.5. Additional Data Template
The ID “62” is a template which includes common additional data objects such as Bill Number and Reference Label. It also allows payment operators to define their own additional data objects.
Table 3.5: Additional Data
ID | Sub-ID | Name | Format | Length | Presence | Remarks |
---|---|---|---|---|---|---|
"62" | "01" | Bill Number | ans | Var up to "25" | O | |
"02" | Mobile Number | ans | Var up to "25" | O | ||
"03" | Store Label | ans | Var up to "25" | O | ||
"04" | Loyalty Number | ans | Var up to "25" | O | ||
"05" | Reference Label | ans | Var up to "25" | O | ||
"06" | Customer Label | ans | Var up to "25" | O | ||
"07" | Terminal Label | ans | Var up to "25" | O | ||
"08" | Purpose of Transaction | ans | Var up to "25" | O | ||
"09" | Transaction Additional Consumer Data | ans | Var up to "25" | O | ||
"10" - "49" | Reserved for EMVCo | S | O | |||
"50" | Reserved for FPS | S | O | |||
"51" | Used for the NCHL | S | O | |||
"52" - "99" | Reserved for payment system operators in Nepal | S | O | Dynamically used by payment operators for use in Nepal |
The payment operators should follow the rules and format in accordance with the EMV QRCPS to process the Data Objects for Additional Data Field Template of the QR Code. As the maximum data size of this Additional Data Field Template (ID “62”) is only 99 characters, it is highly recommended that the operators make use of the pre-defined additional data objects (Sub-IDs “01” – “09”) and avoid defining their own additional data objects in this template so as to prevent data overflow when QR codes of several payment system operators are combined into one NEPALPAY QR Code